package com.lyf.scm.plan.domain.convertor;

import com.github.pagehelper.PageInfo;
import com.lyf.scm.common.model.BaseDTO;
import com.lyf.scm.plan.insfrastructure.db.dataobject.BaseDO;

import java.util.List;

/**
 * 基础转换
 *
 * @author wuzhuang
 * @date 2020/06/19
 */
public interface BaseConvertor<DTO extends BaseDTO, DO extends BaseDO> {

    /**
     * 数据表转查询体
     *
     * @param dO 数据表
     * @return {@link DTO}
     */
    DTO doToDTO(DO dO);

    /**
     * 查询体转数据表
     *
     * @param dto dto
     * @return {@link DO}
     */
    DO dtoToDO(DTO dto);

    /**
     * 数据表转查询体(集合)
     *
     * @param list 列表
     * @return {@link List<DTO>}
     */
    List<DTO> doToDTO(List<DO> list);

    /**
     * 查询体转数据表(集合)
     *
     * @param list 列表
     * @return {@link List<DO>}
     */
    List<DO> dtoToDO(List<DTO> list);

    /**
     * 数据表转查询体（分页）
     *
     * @param pageInfo 页面信息
     * @return {@link PageInfo<DTO>}
     */
    PageInfo<DTO> doToDTO(PageInfo<DO> pageInfo);
}
